
package com.avsa.contratacion.action;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import com.avsa.contratacion.model.Agricultor;
import com.avsa.contratacion.model.Contrato;
import com.avsa.contratacion.service.ContratoServiceImpl;
import com.avsa.pedido.model.DetalleDePedido;
import com.avsa.pedido.model.Pedido;
import com.avsa.pedido.service.PedidoServiceImpl;
import com.opensymphony.xwork2.ActionContext;

public class GenerarContratoAgricultorAction {

	private ContratoServiceImpl contratoServiceImpl=new ContratoServiceImpl();
	private PedidoServiceImpl pedidoServiceImpl=new PedidoServiceImpl();
	private Contrato contrato= new Contrato();
	private Agricultor agricultor=new Agricultor();
	private Pedido pedido=new Pedido();
	private DetalleDePedido detalle;
	private List<DetalleDePedido> listaDetalle=new ArrayList();
	private String mensaje;
	private String fechaInicio;
	private String fechaFin;
	private String idAgricultor;

	
	
	public Pedido getPedido() {
		return pedido;
	}

	public void setPedido(Pedido pedido) {
		this.pedido = pedido;
	}

	public DetalleDePedido getDetalle() {
		return detalle;
	}

	public void setDetalle(DetalleDePedido detalle) {
		this.detalle = detalle;
	}

	public List<DetalleDePedido> getListaDetalle() {
		return listaDetalle;
	}

	public void setListaDetalle(List<DetalleDePedido> listaDetalle) {
		this.listaDetalle = listaDetalle;
	}

	public Agricultor getAgricultor() {
		return agricultor;
	}

	public void setAgricultor(Agricultor agricultor) {
		this.agricultor = agricultor;
	}

	public String getMensaje() {
		return mensaje;
	}

	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}

	public Contrato getContrato() {
		return contrato;
	}

	public void setContrato(Contrato contrato) {
		this.contrato = contrato;
	}

	public String getIdAgricultor() {
		return idAgricultor;
	}

	public void setIdAgricultor(String idAgricultor) {
		this.idAgricultor = idAgricultor;
	}
	
	
	
	public ContratoServiceImpl getContratoService() {
		// begin-user-code
		return contratoServiceImpl;
		// end-user-code
	}
	
	public void cambiarFecha(){
		Date fecha1=null;
		Date fecha2=null;
		try{
			fecha1=new SimpleDateFormat("YYYY-MM-DD").parse(fechaInicio);
			fecha2=new SimpleDateFormat("YYYY-MM-DD").parse(fechaFin);
		}catch(ParseException e){
			e.printStackTrace();
		}
		
		contrato.setFechaInicio(fecha1);
		contrato.setFechaFin(fecha2);
	}

	public void setContratoService(ContratoServiceImpl contratoServiceImpl) {
		// begin-user-code
		this.contratoServiceImpl = contratoServiceImpl;
		// end-user-code
	}

	public int GenerarNumContrato() {
		return contratoServiceImpl.GenerarNumContrato();
		
	}

	public String registrarContrato() {
		
		System.out.println(getFechaFin()+"ttttttttttttttttttttttttttttt");
		
		Date fecha1=new Date();
		Date fecha2=new Date();
		try{
			fecha1=new SimpleDateFormat("yyyy-MM-dd").parse(getFechaInicio());
			fecha2=new SimpleDateFormat("yyyy-MM-dd").parse(getFechaFin());
		}catch(ParseException e){
			e.printStackTrace();
			
			
		}
		long x=fecha2.getTime()  -fecha1.getTime();
		System.out.println(x+"mierdaaaaaaaaaa");
		if(x<0){
			setMensaje("la fecha no coinciden");
			return "error";
		}
		
		else{
		
		contrato.setFechaInicio(fecha1);
		contrato.setFechaFin(fecha2);
		
		
		agricultor=contratoServiceImpl.buscarAgricultorXId(agricultor);
		System.out.println("El agricultor es:"+agricultor.getApellidos());
		contrato.setAgricultor(agricultor);
		detalle=pedidoServiceImpl.buscarDetalle(detalle.getPedido().getId_pedido(),detalle.getProducto().getId_producto());
		System.out.println("El detalle es:"+detalle.getPedido().getId_pedido()+"   "+detalle.getProducto().getId_producto());
		contrato.setDetallePedido(detalle);
		contratoServiceImpl.registrarContrato(contrato);
		mensaje="Contrato registrado con exito";
		return "exito";}
	}



	public String buscarAgricultor() throws Exception{
		
		if(contratoServiceImpl.buscarAgricultor(agricultor)!=null){
			agricultor=contratoServiceImpl.buscarAgricultor(agricultor);
		}
		else{
			mensaje="No se han encontrado los datos del agricultor";
		}
		return "exito";
	}
	
	public String buscarPedido(){
		setIdAgricultor(agricultor.getId_agricultor()+"");
		System.out.println("Id Agricultor"+getIdAgricultor());
		listaDetalle=pedidoServiceImpl.BuscarDetallePedido(pedido);
		
		return "exito";
	}
	
	public String irBuscar(){
		
		setIdAgricultor(agricultor.getId_agricultor()+"");
		System.out.println("Id Agricultor"+idAgricultor);
		return "irBuscar";
	}
	
	public String regresar(){
		contrato.setId_contrato(GenerarNumContrato());
		System.out.print("Id Agricultor"+idAgricultor);
		agricultor.setId_agricultor(Integer.parseInt(idAgricultor));
		agricultor=contratoServiceImpl.buscarAgricultorXId(agricultor);
		
		
		Map parametros=ActionContext.getContext().getParameters();
		String id_pedido=((String[])parametros.get("id_pedido"))[0];
		String id_producto=((String[])parametros.get("id_producto"))[0];
				
	
		detalle=pedidoServiceImpl.buscarDetalle(Integer.parseInt(id_pedido), Integer.parseInt(id_producto));
		return "regreso";
	}
	
	public String irBuscar1(){
		
		
		return "irBuscar1";
	}
	
public String regresar1(){
		
		System.out.println("PEPEPEPEPEPEP");
		contrato.setId_contrato(GenerarNumContrato());
		
		
		
		Map parametros=ActionContext.getContext().getParameters();
		String id_pedido=((String[])parametros.get("id_pedido"))[0];
		String id_producto=((String[])parametros.get("id_producto"))[0];
				
	
		detalle=pedidoServiceImpl.buscarDetalle(Integer.parseInt(id_pedido), Integer.parseInt(id_producto));
		pedido.setId_pedido(detalle.getPedido().getId_pedido());
		System.out.println("detalle pedido"+ pedido.getId_pedido());
		return "regreso1";
	}
	public String buscarPedido1(){
	listaDetalle=pedidoServiceImpl.BuscarDetallePedido(pedido);
	
	return "exito1";
	}

	public boolean validarCampo(){
		return true;
	}

	public String getFechaInicio() {
		return fechaInicio;
	}

	public void setFechaInicio(String fechaInicio) {
		this.fechaInicio = fechaInicio;
	}

	public String getFechaFin() {
		return fechaFin;
	}

	public void setFechaFin(String fechaFin) {
		this.fechaFin = fechaFin;
	}
	
	
	
	
	
	
	
	
}